{
  /*
    学习目标：实现useState类型
  */

  //  目标： const [count, setCount] = useState(0)
  // 1. count类型由初始值决定
  // 2. setCount的类型是函数 (newCount) => void
  // 3. 返回值是元组类型

  const useState = (initValue) => {
    const setStateFn = (newVlue) => {
      // 省略setState实现
    };
    return [initValue, setStateFn];
  };

  const [msg, setMsg] = useState('hello');
  setMsg(123);

  type UseStateFn = <T>(initValue: T) => [T, (newValue: T) => void];

  // 不用这种方式实现
  // // 1. 指定<T>，获取参数类型
  // // 4. 指定返回值类型，💥注意返回值是元组
  // function useState<T>(initValue: T): [T, (newValue: T) => void] {
  //   // 2.定义setStateFn ，
  //   const setStateFn = (newValue: T) => {};
  //   // 3. 实现返回值
  //   // 💥注意，这里返回的是值。相当于return  [1, () => {}],类型推断为数组
  //   // 💥实际需要元组
  //   return [initValue, setStateFn];
  // }

  // const [count, setCount] = useState(0);
  // count.toFixed(2);
  // setCount(12);
}
